package com.cacho.s2b.lesson.face;

// 用在类上：则为这个类所有属性供 setter 和 getter方法 (@Setter 和 @Getter)
import lombok.Setter;

/** Description: 抽象一个接口-PrinterFace，打印方法; 抽象一个接口-IntroduceFace，定义打印内容;
 * PrinterCenter 负责选择打印机并提供打印功能
 **/
@Setter
//相当于对类属性 private PrinterFace printer进行 public void setPrinter(IntroduceFace p){this.printer=p}
public class PrinterCenter implements IntroduceFace{
    // 设置打印机类型
    private PrinterFace printer; //选择一个打印机
    public String detail(){
        return "这里是打印机打印中心，打印内容如下："; // 实现接口 IntroduceFace 方法
    }
    public void print(IntroduceFace info){
        printer.print(info.detail());  //选择打印机去实现接口 IntroduceFace 方法
    }

    public static void main(String[] args){
        PrinterCenter center = new PrinterCenter();
        center.setPrinter(new BlackPrinter());  // 配置黑白打印机 (setPrinter=@Setter)
        center.print(center);  //打印内容
        center.setPrinter(new ColorPrinter());  // 配置彩色打印机
        center.print(center);  //打印内容
    }

}
